<?php defined('BASEPATH') OR exit('No direct script access allowed');

class Funcionalidade_Model extends CI_Model {

	public function __construct()
	{
		parent::__construct();
	}
	
	public function inserir($data){
	
		$retorno = $this->db->insert('tb_funcionalidade', $data);
		
		if(!$retorno){
			throw new Exception('Ocorreu um erro inserir a Funcionalidade. Favor tentar novamente mais tarde.');
		}else{
			if($this->db->affected_rows() > 0){
				return $this->db->insert_id();
			}
		}
		
	}
	
	public function alterar($data, $id){
	
		$this->db->where('idFuncionalidade', $id);
		$retorno = $this->db->update('tb_funcionalidade', $data);
		
		if(!$retorno){
			throw new Exception('Ocorreu um erro ao alterar a Funcionalidade. Favor tentar novamente mais tarde.');
		}else{
			return true;
		}
	}
	
	public function excluir($id){
	
		$this->db->where('idFuncionalidade', $id);
		$retorno = $this->db->delete('tb_funcionalidade');
	
		if(!$retorno){
			throw new Exception('Ocorreu um erro ao excluir a Funcionalidade. Favor tentar novamente mais tarde.');
		}else{
			return true;
		}
	}
	
	public function excluirPorIdMenu($idMenu){
		
		$this->db->where('idMenu', $idMenu);
		$retorno = $this->db->delete('tb_funcionalidade');
		
		if(!$retorno){
			throw new Exception('Ocorreu um erro ao excluir a Funcionalidade. Favor tentar novamente mais tarde.');
		}else{
			return true;
		}
	}
	
	function obter($id){
	
		$sql = "select fun.*, menu.descricao
				FROM tb_funcionalidade as fun
					inner join tb_menu as menu on (menu.idMenu = fun.idMenu)
				WHERE 1 = 1
				and idFuncionalidade = ".$id;
	
		$query = $this->db->query($sql);
	
		if($query->num_rows() > 0){
			$obj = $query->result();
			
			return $obj[0];
		}else{
			return null;
		}
	}
	
	function pesquisar($menu, $tipoFuncionalidade, $metodo){
	
		$sql = "select fun.*, menu.descricao
				FROM tb_funcionalidade as fun
					inner join tb_menu as menu on (menu.idMenu = fun.idMenu)
				WHERE 1 = 1 ";
	
		if (!empty($menu)){
			$sql .= "and menu.idMenu = ".$menu." ";
		}
		
		if (!empty($tipoFuncionalidade)){
			$sql .= "and fun.tipoFuncionalidade = ".$tipoFuncionalidade." ";
		}
		
		if (!empty($metodo)){
			$sql .= "and fun.metodo like '%".$metodo."%' ";
		}
	
		$sql .= "order by menu.descricao, fun.metodo";
	
		$query = $this->db->query($sql);
	
		return $query->result();
	}
	
	function validaRegistroExistente($menu, $tipoFuncionalidade, $metodo){
		
		$sql = "select *
				FROM tb_funcionalidade
				WHERE 1 = 1 ";
		
		if (!empty($menu)){
			$sql .= "and idMenu = ".$menu." ";
		}
		
		if (!empty($tipoFuncionalidade)){
			$sql .= "and tipoFuncionalidade = ".$tipoFuncionalidade." ";
		}
		
		if (!empty($metodo)){
			$sql .= "and metodo = '".$metodo."' ";
		}
		
		$query = $this->db->query($sql);
		
		if($query->num_rows() > 0){
			return true;
		}else{
			return false;
		}
		
	}
	
	function listaFuncionalidadePorMenu ($idMenu){
		
		$sql = "select *
				FROM tb_funcionalidade
				WHERE 1 = 1 
				and idMenu = ".$idMenu."
				order by tipoFuncionalidade asc";
		
		$query = $this->db->query($sql);
		
		return $query->result();
	}
}